﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;

namespace KelonProud
{
    public static class StringExtensions
    {
        public static bool HasValue(this string value)
        {
            return !string.IsNullOrWhiteSpace(value);
        }

        public static string FormatWith(this string format, params object[] args)
        {
            if (string.IsNullOrWhiteSpace(format))
                return string.Empty;

            if (args == null)
                return format;

            if (!args.Any())
                return format;

            return string.Format(format, args);
        }

        public static List<T> JsonToList<T>(this string json)
        {
            return JsonToList<T>(json, true);
        }

        public static List<T> JsonToList<T>(this string json, bool isReplace)
        {
            if (isReplace)
                json = json.Replace('\'', '\"');

            return JsonConvert.DeserializeObject<List<T>>(json);
        }

        public static T JsonToEntity<T>(this string json)
        {
            return JsonToEntity<T>(json, true);
        }
        public static T JsonToEntity<T>(this string json, bool isReplace)
        {
            if (isReplace)
                json = json.Replace('\'', '\"');

            return JsonConvert.DeserializeObject<T>(json);
        }

        public static string ToBaseString(this byte[] bytes)
        {
            return Encoding.Default.GetString(bytes);
        }

        public static byte[] ToBytes(this string str)
        {
            return Encoding.Default.GetBytes(str);
        }
    }
}
